/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package model.negocio;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpSession;
import model.beans.Consulta;
import model.dao.ConsultaDAO;

/**
 *
 * @author Juliane Chaerki
 */
public class ConsultaNegocio {
    public ConsultaNegocio(){}
    
    public List<Object> ValidaDados(Consulta consulta, int idUsu) throws Exception{
        List<Object> lista = new ArrayList<Object>();
        if(consulta.getData() == null){
            lista.add(false);
            lista.add("Preencha o campo 'Data'!");
            return lista;
        }
        Date dataAtual = new Date(System.currentTimeMillis());
        Date dataCons = consulta.getData();
        if(dataCons.before(dataAtual)){
            //Confere se a data de consulta é menor que a data atual
            lista.add(false);
            lista.add("A Data de Consulta não pode ser menor que a data atual!");
            return lista;
        }
        List<Object> lista2 = new ArrayList<Object>();
        lista2 = validaHora(consulta, idUsu);
        boolean valida = (Boolean)lista2.get(0);
        if(valida){
            lista.add(true);
            return lista;
        }else{
            lista = lista2;
        }
        lista.add(true);
        return lista;
    }
    
    public void Salvar(Consulta consulta, int idUsu){
        try{
            ConsultaDAO dao = new ConsultaDAO();
            dao.inserirConsulta(consulta, idUsu);
        }catch(Exception ex){
            ex.getMessage();
        }
    }
    
    public void alterar(Consulta consulta){
        try{
            ConsultaDAO dao = new ConsultaDAO();
            dao.atualizar(consulta);
        }catch(Exception ex){
            ex.getMessage();
        }
    }
    
    public List<Consulta> listarConsulta(int tipoUsu, int idUsu){
        try {
            ConsultaDAO dao = new ConsultaDAO();
            List<Consulta> lista = new ArrayList();
            
            if(tipoUsu == 1){
                lista = dao.listarConsultaAdmin();
            }else{
                lista = dao.listarConsulta(idUsu);
                 }
            return lista;
        } catch (Exception e) {
            return null;
        }
    }
    
    public void excluir(int id) throws Exception{
        ConsultaDAO dao = new ConsultaDAO();
        dao.excluir(id);
    }
    
    public List<Object> validaHora(Consulta consulta, int idUsu){
        List<Object> lista = new ArrayList<Object>();
        try{
            ConsultaDAO dao = new ConsultaDAO();
            List<Consulta> listaConsulta = dao.listarConsulta(idUsu);
            for(Consulta c : listaConsulta){
                if(c.getData().equals(consulta.getData())){
                    if(c.getHorario().getIdHorario() == consulta.getHorario().getIdHorario()){
                        lista.add(false);
                        lista.add("Já existe uma consulta marcada neste mesmo horário com o usuário logado!");
                        return lista;
                    }
                }
            }
            lista.add(true);
            return lista;
        }catch(Exception ex){
            lista.add(false);
            lista.add("Ocorreu algum erro no sistema, tente novamente ou entre em contato com o administrador!");
            return lista;
        }
    }
    
}
